home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / CRAZY8.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  6.9 KB  |  299 lines

  1. 10  REM Author Les Davids
  2. 20  DIM SUIT$(4),CARD$(52),DECK$(52)
  3. 30  DIM FIG$(5,5)
  4. 40  DEFINT A-Z
  5. 50  DIM DECK(52),PHAND$(26),CHAND$(26)
  6. 60  DIM TEST(52),OLDHAND$(25)
  7. 70  SCREEN 0,1:COLOR 0,2:CLS
  8. 80  KEY OFF
  9. 90  LOCATE 2,9
  10. 100  PRINT "C R A Z Y   E I G H T S"
  11. 110  DIM VALUE$(13),VALUE(13)
  12. 120  LOCATE 4,1
  13. 130  PRINT"The objective of the game is to get rid"
  14. 140  PRINT"of all your cards by placing them on"
  15. 150  PRINT"the discard pile."
  16. 160  PRINT"You can play a card if you have the "
  17. 170  PRINT"same suit, the same number (in which"
  18. 180  PRINT"case the suit changes), or at any time"
  19. 190  PRINT"you can play an eight. If you play an"
  20. 200  PRINT"eight you will be prompted for new suit (h,c,s,d)."
  21. 210  PRINT"If you cannot go, hit the space bar."
  22. 220  PRINT"You will then be dealt a new card."
  23. 230  PRINT
  24. 240  PRINT"Game will end at 100 points."
  25. 250  PRINT"The winner receives points from the"
  26. 260  PRINT"losers hand. Points are equal to "
  27. 270  PRINT"face value. Face cards are 10 each,"
  28. 280  PRINT"aces are worth 15."
  29. 290  LOCATE 22,15:INPUT "NAME ",N$
  30. 300  CLS: LOCATE 2,9
  31. 310  DATA "A","2","3","4","5","6","7"
  32. 320  DATA "8","9","0","J","Q","K"
  33. 330  DATA 15,2,3,4,5,6,7,8,9,10,10,10,10
  34. 340  FOR I=1 TO 13:READ VALUE$(I):NEXT I
  35. 350  FOR I=1 TO 13:READ VALUE(I):NEXT I
  36. 360  PRINT "C R A Z Y   E I G H T S"
  37. 370  LOCATE 5,2:PRINT"SCORE"
  38. 380  LOCATE 6,4:PRINT "COMPUTER";CSCORE
  39. 390  LOCATE 7,4:PRINT N$;PSCORE
  40. 400  FOR I=1 TO 40
  41. 410  LOCATE 9,I: PRINT CHR$(205)
  42. 420  NEXT I
  43. 430  REM ** shuffle cards
  44. 440  GOSUB 1500
  45. 450  REM ** deal cards
  46. 460  COLOR 7,7
  47. 470  FOR I = 1 TO 8
  48. 480  J=1+((I-1)*2)
  49. 490  PHAND$(I)=DECK$(J)
  50. 500  CHAND$(I)=DECK$(J+1)
  51. 510  NEXT I
  52. 520  NEXTCARD = 18
  53. 530  UPCARD$ = DECK$(17)
  54. 540  PCARDS=8
  55. 550  CCARDS=8
  56. 560  REM ** sort player's hand
  57. 570  SORTTEST=1
  58. 580  WHILE SORTTEST
  59. 590  SORTTEST=0
  60. 600  FOR I=1 TO PCARDS-1
  61. 610  CHAR1$=MID$(PHAND$(I),3)
  62. 620  CHAR2$=MID$(PHAND$(I+1),3)
  63. 630  IF CHAR1$>CHAR2$ THEN SWAP PHAND$(I),PHAND$(I+1): SORTTEST = 1
  64. 640  NEXT I
  65. 650  WEND
  66. 660  THE$="   ": GOSUB 2370
  67. 670  THE$=UPCARD$: GOSUB 2460
  68. 680  ROW=4:COL=19:GOSUB 2380
  69. 690  ROW=10
  70. 700  FOR I=1 TO 6
  71. 710  IF I>(PCARDS+1) THEN 760
  72. 720  IF PHAND$(I)=OLDHAND$(I) THEN 780
  73. 730  OLDHAND$(I)=PHAND$(I)
  74. 740  THE$=PHAND$(I): GOSUB 2460
  75. 750  COL=1+(6*(I-1)): GOSUB 2380
  76. 760  LOCATE 15,(2+((I-1)*6))
  77. 770  IF I<=PCARDS THEN PRINT I ELSE PRINT "  "
  78. 780  NEXT I
  79. 790  ROW=17
  80. 800  FOR I=7 TO (PCARDS+1)
  81. 810  J=I-6
  82. 820  IF PHAND$(I)=OLDHAND$(I) THEN 960
  83. 830  OLDHAND$(I)=PHAND$(I)
  84. 840  THE$=PHAND$(I): GOSUB 2460
  85. 850  COL=1+(6*(J-1)): GOSUB 2380
  86. 860  LOCATE 22,(2+((I-7)*6))
  87. 870  IF I=(PCARDS+1) THEN PRINT "  ": GOTO 960
  88. 880  IF I<10 THEN PRINT I
  89. 890  IF I = 10 THEN PRINT " A"
  90. 900  IF I = 11 THEN PRINT " B"
  91. 910  IF I = 12 THEN PRINT " C"
  92. 920  IF I = 13 THEN PRINT " D"
  93. 930  IF I = 14 THEN PRINT " E"
  94. 940  IF I = 15 THEN PRINT " F"
  95. 950  IF I = 16 THEN PRINT " G"
  96. 960  NEXT I
  97. 970  LOCATE 23,20:PRINT"ENTER YOUR PLAY"
  98. 980  IN$=INKEY$:IF IN$="" THEN 980
  99. 990  LOCATE 7,29:PRINT"           "
  100. 1000  LOCATE 23,20:PRINT"THINKING       "
  101. 1010  IF IN$<>" " THEN 1090
  102. 1020  IF TAKE=1 THEN 1430
  103. 1030  PCARDS=PCARDS+1
  104. 1040  IF NEXTCARD = 53 THEN 2890
  105. 1050  PHAND$(PCARDS)=DECK$(NEXTCARD)
  106. 1060  NEXTCARD=NEXTCARD+1
  107. 1070  TAKE = 1
  108. 1080  GOTO 570
  109. 1090  IF IN$>"9" THEN 1120
  110. 1100  IN=VAL(IN$)
  111. 1110  GOTO 1220
  112. 1120  IF IN$="a" THEN IN=10
  113. 1130  IF IN$="b" THEN IN=11
  114. 1140  IF IN$="c" THEN IN=12
  115. 1150  IF IN$="d" THEN IN=13
  116. 1160  IF IN$="e" THEN IN=14
  117. 1170  IF IN$="e" THEN IN=15
  118. 1180  IF IN$<"a" OR IN$>"e" THEN 1190            ELSE 1220
  119. 1190  LOCATE 23,20
  120. 1200  PLAY "mfo1fd":PRINT "WRONG CARD"
  121. 1210  GOTO 970
  122. 1220  IN$=PHAND$(IN)
  123. 1230  IF MID$(IN$,2,1)="8" THEN 1290
  124. 1240  IF MID$(IN$,1,2) = MID$(UPCARD$,1,2) THEN 1380
  125. 1250  IF MID$(IN$,3,1) = MID$(UPCARD$,3,1) THEN 1380
  126. 1260  LOCATE 23,20
  127. 1270  PRINT "WRONG CARD"
  128. 1280  GOTO 970
  129. 1290  LOCATE 23,20: PRINT"WHAT SUIT?"
  130. 1300  S$=INKEY$: IF S$="" THEN 1300
  131. 1310  IF S$ = "c" THEN 1360
  132. 1320  IF S$ = "d" THEN 1360
  133. 1330  IF S$ = "h" THEN 1360
  134. 1340  IF S$ = "s" THEN 1360
  135. 1350  GOTO 1300
  136. 1360  REM ** switch suit
  137. 1370  MID$(IN$,3,1)=MID$(S$,1,1)
  138. 1380  TAKE = 0
  139. 1390  UPCARD$ = IN$
  140. 1400  IF IN = PCARDS THEN 1420
  141. 1410  PHAND$(IN) = PHAND$(PCARDS)
  142. 1420  PCARDS = PCARDS - 1
  143. 1430  PHAND$(PCARDS+1) = "   "
  144. 1440  IF PCARDS=0 THEN 2730
  145. 1450  TAKE=0
  146. 1460  GOSUB 1860
  147. 1470  IF CCARDS = 0 THEN 2730
  148. 1480  TAKE=0
  149. 1490  GOTO 560
  150. 1500  REM ******* shuffle routine ******
  151. 1510  LOCATE 6,29: PRINT"NEW GAME"
  152. 1520  TIM$=MID$(TIME$,4,2)
  153. 1530  TIM$=TIM$+MID$(TIME$,7,2)
  154. 1540  SEED=VAL(TIM$)
  155. 1550  RANDOMIZE(SEED)
  156. 1560  COUNT = 1
  157. 1570  WHILE COUNT < 53
  158. 1580  NUMBR=100*RND
  159. 1590  IF NUMBR > 52 THEN 1580
  160. 1600  IF NUMBR = 0 THEN 1580
  161. 1610  IF TEST(NUMBR) = 1 THEN 1580
  162. 1620  TEST(NUMBR) = 1
  163. 1630  DECK(COUNT) = NUMBR
  164. 1640  COUNT = COUNT + 1
  165. 1650  WEND
  166. 1660  IF PSCORE <>0 OR CSCORE<>0 THEN 1810
  167. 1670  DATA "c","d","h","s"
  168. 1680  FOR I=1 TO 4
  169. 1690  READ SUIT$(I)
  170. 1700  NEXT I
  171. 1710  DATA " A"," 2"," 3"," 4"," 5"," 6"," 7"
  172. 1720  DATA " 8"," 9","10"," J"," Q"," K"
  173. 1730  FOR I = 1 TO 4
  174. 1740  FOR J = 1 TO 13
  175. 1750  N = J+((I-1)*13)
  176. 1760  READ CARD$(N)
  177. 1770  CARD$(N)=CARD$(N)+SUIT$(I)
  178. 1780  NEXT J
  179. 1790  RESTORE 1710
  180. 1800  NEXT I
  181. 1810  FOR I=1 TO 52
  182. 1820  DECK$(I) = CARD$(DECK(I))
  183. 1830  PLAY "mbl64t255o0aa-p64"
  184. 1840  NEXT I
  185. 1850  RETURN
  186. 1860  REM ** computer section
  187. 1870  REM ** sort computer's hand
  188. 1880  TAKE=0
  189. 1890  SORTTEST=1
  190. 1900  WHILE SORTTEST
  191. 1910  SORTTEST=0
  192. 1920  FOR I=1 TO CCARDS-1
  193. 1930  CHAR1$=MID$(CHAND$(I),3)
  194. 1940  CHAR2$=MID$(CHAND$(I+1),3)
  195. 1950  IF CHAR1$>CHAR2$ THEN SWAP CHAND$(I),CHAND$(I+1): SORTTEST = 1
  196. 1960  NEXT I
  197. 1970  WEND
  198. 1980  REM ** look for suit
  199. 1990  FOR IN=1 TO CCARDS
  200. 2000  S$=MID$(UPCARD$,3,1)
  201. 2010  T$=MID$(CHAND$(IN),3,1)
  202. 2020  IF S$=T$ AND MID$(CHAND$(IN),2,1)<>"8" THEN 2320
  203. 2030  NEXT IN
  204. 2040  REM ** look for number
  205. 2050  FOR IN=1 TO CCARDS
  206. 2060  S$=MID$(UPCARD$,1,2)
  207. 2070  T$=MID$(CHAND$(IN),1,2)
  208. 2080  IF S$=T$ THEN 2320
  209. 2090  NEXT IN
  210. 2100  REM ** look for eight
  211. 2110  FOR IN = 1 TO CCARDS
  212. 2120  IF MID$(CHAND$(IN),2,1)="8" THEN 2240
  213. 2130  NEXT IN
  214. 2140  REM ** take another card
  215. 2150  IF TAKE = 1 THEN TAKE=0: RETURN
  216. 2160  TAKE = 1
  217. 2170  CCARDS=CCARDS+1
  218. 2180  CHAND$(CCARDS)=DECK$(NEXTCARD)
  219. 2190  NEXTCARD=NEXTCARD+1
  220. 2200  LOCATE 6,29:PRINT "CARDS ";CCARDS
  221. 2210  LOCATE 7,29: PRINT"TOOK CARD"
  222. 2220  IF NEXTCARD=53 THEN 2890
  223. 2230  GOTO 1890
  224. 2240  REM ** space for playing 8
  225. 2250  IF IN=1 THEN S$=MID$(CHAND$(2),3,1) ELSE S$=MID$(CHAND$(1),3,1)
  226. 2260  MID$(CHAND$(IN),3,1)=S$
  227. 2270  LOCATE 7,29
  228. 2280  IF S$="c" THEN PRINT"CLUBS    "
  229. 2290  IF S$="d" THEN PRINT"DIAMONDS "
  230. 2300  IF S$="h" THEN PRINT"HEARTS   "
  231. 2310  IF S$="s" THEN PRINT"SPADES   "
  232. 2320  UPCARD$=CHAND$(IN)
  233. 2330  IF IN <> CCARDS THEN CHAND$(IN)=CHAND$(CCARDS)
  234. 2340  CCARDS=CCARDS-1
  235. 2350  LOCATE 6,29:PRINT "CARDS ";CCARDS
  236. 2360  IF CCARDS=1 THEN LOCATE 7,29: PRINT"LAST CARD":SOUND 400,5
  237. 2370  RETURN
  238. 2380  REM ** print a card
  239. 2390  FOR SI=1 TO 5
  240. 2400  FOR SJ = 1 TO 5
  241. 2410  LOCATE (ROW+(SI-1)),(COL+(SJ-1))
  242. 2420  PRINT FIG$(SI,SJ)
  243. 2430  NEXT SJ,SI
  244. 2440  COLOR 0,2
  245. 2450  RETURN
  246. 2460  REM ** create figure
  247. 2470  IF PASS = 1 THEN 2630
  248. 2480  PASS=1
  249. 2490  FIG$(2,4)=" "
  250. 2500  FIG$(3,4)=" "
  251. 2510  FIG$(3,2)=" "
  252. 2520  FIG$(4,2)=" "
  253. 2530  FIG$(1,1)=CHR$(201)
  254. 2540  FIG$(1,5)=CHR$(187)
  255. 2550  FIG$(5,1)=CHR$(200)
  256. 2560  FIG$(5,5)=CHR$(188)
  257. 2570  FOR SI=1 TO 3
  258. 2580  FIG$(1,SI+1)=CHR$(205)
  259. 2590  FIG$(5,SI+1)=CHR$(205)
  260. 2600  FIG$(SI+1,1)=CHR$(186)
  261. 2610  FIG$(SI+1,5)=CHR$(186)
  262. 2620  NEXT SI
  263. 2630  IF THE$="   " THEN FOR SI=1 TO 5: FOR SJ=1 TO 5: COLOR 7,2: FIG$(SI,SJ)=" ":NEXT SJ,SI: PASS=0: RETURN
  264. 2640  COLOR 7,2:FIG$(2,3)=" "
  265. 2650  FIG$(4,3)=" "
  266. 2660  IF MID$(THE$,1,1)=" " THEN FIG$(2,2)=MID$(THE$,2,1): FIG$(4,4)=FIG$(2,2) ELSE FIG$(2,2)="1": FIG$(2,3)="0": FIG$(4,3)="1":FIG$(4,4)="0"
  267. 2670  S$=MID$(THE$,3,1)
  268. 2680  IF S$="d" THEN FIG$(3,3)=CHR$(4):COLOR 4,7
  269. 2690  IF S$="c" THEN FIG$(3,3)=CHR$(5):COLOR 0,7
  270. 2700  IF S$="h" THEN FIG$(3,3)=CHR$(3):COLOR 4,7
  271. 2710  IF S$="s" THEN FIG$(3,3)=CHR$(6):COLOR 0,7
  272. 2720  RETURN
  273. 2730  LOCATE 7,29
  274. 2740  IF PCARDS=0 THEN PRINT"!!YOU WIN" ELSE PRINT"!! I WIN "
  275. 2750  FOR SI=1 TO PCARDS
  276. 2760  SPHAND$=SPHAND$+PHAND$(SI)
  277. 2770  FOR SJ=1 TO 13
  278. 2780  QET$=MID$(PHAND$(SI),2,1)
  279. 2790  QIT$=MID$(VALUE$(SJ),1,1)
  280. 2800  IF QET$=QIT$ THEN CSCORE=CSCORE+VALUE(SJ)
  281. 2810  NEXT SJ
  282. 2820  NEXT SI
  283. 2830  FOR SI=1 TO CCARDS
  284. 2840  SCHAND$=SCHAND$+CHAND$(SI)
  285. 2850  FOR SJ=1 TO 13
  286. 2860  IF MID$(CHAND$(SI),2,1)=MID$(VALUE$(SJ),1,1) THEN PSCORE=PSCORE+VALUE(SJ)
  287. 2870  NEXT SJ
  288. 2880  NEXT SI
  289. 2890  FOR SI=1 TO 52
  290. 2900  TEST(SI)=0
  291. 2910  NEXT SI
  292. 2920  IF PSCORE<100 AND CSCORE<100 THEN 370
  293. 2930  LOCATE 6,4:PRINT "COMPUTER";CSCORE
  294. 2940  LOCATE 7,4:PRINT N$;PSCORE
  295. 2950  PRINT"thank you"
  296. 2960  LOCATE 24,20,0:PRINT "WANT ANOTHER GAME? ";
  297. 2970  KY$=INKEY$: IF KY$="" THEN 2970
  298. 2980  IF KY$="y" OR KY$="Y" THEN CHAIN "CRAZY8",1000 ELSE END
  299.